home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / fax / src / faxstat / RecvStatus.c++ < prev    next >
C/C++ Source or Header  |  1994-08-01  |  3KB  |  96 lines

  1. /*    $Header: /usr/people/sam/fax/faxstat/RCS/RecvStatus.c++,v 1.10 1994/02/28 14:17:18 sam Rel $ */
  2. /*
  3.  * Copyright (c) 1990, 1991, 1992, 1993, 1994 Sam Leffler
  4.  * Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and 
  7.  * its documentation for any purpose is hereby granted without fee, provided
  8.  * that (i) the above copyright notices and this permission notice appear in
  9.  * all copies of the software and related documentation, and (ii) the names of
  10.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  11.  * publicity relating to the software without the specific, prior written
  12.  * permission of Sam Leffler and Silicon Graphics.
  13.  * 
  14.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  15.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  16.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  17.  * 
  18.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  19.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  20.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  22.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  23.  * OF THIS SOFTWARE.
  24.  */
  25. #include <string.h>
  26. #include "RecvStatus.h"
  27. #include "PageSize.h"
  28.  
  29. FaxRecvStatus::FaxRecvStatus() {}
  30. FaxRecvStatus::~FaxRecvStatus() {}
  31.  
  32. fxBool
  33. FaxRecvStatus::scan(const char* buf)
  34. {
  35.     return sscanf(buf, "%d:%u:%u:%f:%u",
  36.     &beingReceived, &pageWidth, &pageLength, &resolution, &npages) == 5;
  37. }
  38.  
  39. int
  40. FaxRecvStatus::compare(const FaxRecvStatus* other) const
  41. {
  42.     int c = -date.compare(&other->date);
  43.     if (c == 0)
  44.     c = -time.compare(&other->time);
  45.     if (c == 0)
  46.     c = sender.compare(&other->sender);
  47.     return c == 0 ? (npages - other->npages) : c;
  48. }
  49.  
  50. fxBool
  51. FaxRecvStatus::parse(const char* tag)
  52. {
  53.     if (scan(tag)) {
  54.     for (const char* cp = strchr(tag, '\0'); cp > tag && *cp != ':'; cp--)
  55.         ;
  56.     sender.append(cp+1, 16);
  57.     cp = cp-20+1;
  58.     if (cp > tag) {
  59.         date.append(cp, 10);
  60.         time.append(cp+11, 8);
  61.     } else {
  62.         date = "????:??:??";
  63.         time = "??:??:??";
  64.     }
  65.     return (TRUE);
  66.     } else
  67.     return (FALSE);
  68. }
  69.  
  70. void
  71. FaxRecvStatus::printHeader(FILE* fp, fxBool showHost)
  72. {
  73.     fprintf(fp, "%-14s %-16s %10s %-7s %s\n",
  74.     "Sender", "Received At", "Pages", "Quality",
  75.     (showHost ? "(Host)" : ""));
  76. }
  77.  
  78. void
  79. FaxRecvStatus::print(FILE* fp, fxBool showHost)
  80. {
  81.     float w = (pageWidth / 204.) * 25.4;
  82.     float h = pageLength / (resolution < 100 ? 3.85 : 7.7);
  83.     PageSizeInfo* info = PageSizeInfo::getPageSizeBySize(w, h);
  84.     fprintf(fp, "%-14.14s %5.5s %10.10s %3d %6.6s %-7.7s %s\n"
  85.     , (char*) sender
  86.     , (!beingReceived ? (char*) time : "")
  87.     , (!beingReceived ? (char*) date : "")
  88.     , npages
  89.     , info ? info->abbrev() : ""
  90.     , (resolution > 150 ? "fine" : "normal")
  91.     , (showHost ? (char*) host : "")
  92.     );
  93. }
  94.  
  95. fxIMPLEMENT_ObjArray(FaxRecvStatusArray, FaxRecvStatus);
  96.